/* This program is free software. It comes without any warranty, to
 * the extent permitted by applicable law. You can redistribute it
 * and/or modify it under the terms of the Do What The Fuck You Want
 * To Public License, Version 2, as published by Sam Hocevar. See
 * http://sam.zoy.org/wtfpl/COPYING for more details. */ 
package de.rockon.fuzzy.controller.model.enums;

import de.rockon.fuzzy.controller.operators.defuzzyfy.AbstractDefuzzyfier;
import de.rockon.fuzzy.controller.operators.defuzzyfy.AvgMaximumDefuzzyfier;
import de.rockon.fuzzy.controller.operators.defuzzyfy.BalancePointDefuzzyfier;
import de.rockon.fuzzy.controller.operators.defuzzyfy.FirstMaximumDefuzzyfier;
import de.rockon.fuzzy.controller.operators.defuzzyfy.LastMaximumDefuzzyfier;

/**
 * Alle Defuzzyfizierrungs-Methoden http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html
 */
public enum DefuzzyfyType {
	/**
	 * BALANCE_POINT
	 */
	BALANCE_POINT(new BalancePointDefuzzyfier(null)),
	/**
	 * FIRST_MAXIMUM
	 */
	FIRST_MAXIMUM(new FirstMaximumDefuzzyfier(null)),
	/**
	 * LAST_MAXIMUM
	 */
	LAST_MAXIMUM(new LastMaximumDefuzzyfier(null)),
	/**
	 * AVG_MAXIMUM
	 */
	AVG_MAXIMUM(new AvgMaximumDefuzzyfier(null));

	/**
	 * der Name des Enums
	 */
	private final AbstractDefuzzyfier name;

	/**
	 * Konstruktor
	 */
	DefuzzyfyType(AbstractDefuzzyfier name) {
		this.name = name;
	}

	public AbstractDefuzzyfier getOperator() {
		return name;
	}

	@Override
	public String toString() {
		return name.toString();
	}

}